1. Field
The invention relates to storage software. Specifically, the invention relates to apparatus, systems, and methods for isolating a storage application from a network interface driver.
2. Description of the Related Art
Early computer systems consisted of a host and a connected storage device located in the same chassis. The host comprised a processor and volatile memory. The storage device was a non-volatile method of storage such as a hard drive, floppy drive, or tape system. As computer systems became more sophisticated a need arose for a protocol to connect multiple storage devices to a single host.
The Small Computer Systems Interface (SCSI) protocol emerged as a popular method of enabling communication between storage devices and a host computer. SCSI devices are typically connected in a chain with a host connected to a first storage device, the first storage device connected to a second storage device, and so on. Each of the devices in the chain is able to communicate with each other. SCSI chains allow the host to access each of the storage devices and also allow storage devices to communicate with each other. The ability for storage devices to communicate directly with each other enables procedures such as backing up a hard drive to a tape.
Recently new storage requirements for computer systems have become apparent. The widespread use of the Internet for examples has created a need for computer systems with large amounts of storage, and little or no tolerance for taking storage devices off line to perform backups. SCSI chains have evolved into storage area networks (SANs) to meet these requirements.
In a SAN, one or more SAN switches connect a plurality of hosts to a plurality of storage devices. The SAN switches, also referred to as a SAN fabric, allow any host to interact with any storage device. The any to any connectivity provided by a SAN enables new storage functionality. For example, multiple hosts may share a common storage device. Additionally, multiple storage devices may be aggregated together to provide a single, large, virtual storage device. SANs also facilitate mirroring of storage device to create backup data without having to take a storage device offline.
A network interface connects each host and each storage device to the SAN. The network interface provides a physical connection to a SAN switch. Typically the physical connector uses fiber optic or copper cables. The network interface uses one or more protocols to communicate with the SAN switch. Typical protocols used in SANs include Fibre Channel, Ethernet, and Internet Protocol (IP). These protocols have been extended to accommodate transporting SCSI commands.
Protocols that enable SCSI commands to be sent over a SAN allow existing storage applications utilizing SCSI commands to operate over a SAN. In addition, storage devices rely on SCSI commands. Transporting SCSI commands over a SAN using an extended protocol makes the SAN transparent to the existing host storage application and storage device. Typical protocol extensions for SCSI commands include Fibre Channel Protocol for SCSI (FCP), which allows SCSI commands to be transported on Fibre Channel networks, and Internet SCSI (iSCSI), which allows SCSI commands to be transported on IP networks.
SCSI defines two types of devices: initiators and targets. Initiators send SCSI commands to a SCSI target to request that data be retrieved from or sent to the SCSI target. Typically hosts are SCSI initiators. Targets receive SCSI commands from a SCSI initiator. As a result of the SCSI command, the target stores data sent to the target by the initiator or sends data stored on the target to the initiator. Typically storage devices are SCSI targets.
SCSI commands that retrieve or store data, as well as SCSI commands that request status information regarding the success or failure of a data transfer may be classified as SCSI control messages. SCSI control messages convey a request for information or data. SCSI control messages do not convey the data itself. SCSI data blocks transport data between an initiator and a target. Storage application use SCSI control messages and SCSI data blocks.
A storage application is software that uses storage commands, such as SCSI commands, to transfer data between the host that the storage application resides on and a storage device. Typically, a storage application does not communicate directly with a network interface. Storage commands from the storage application are sent to software known as a network interface driver. The Network Interface Driver adapts the storage commands to a format suitable for transmission by the network interface on a fiber optic or copper cable.
A storage application typically interfaces with a network interface driver using function calls. The storage application must know the correct function calls to communicate with a particular network interface driver. Coordination of function calls between storage applications and network interface drivers is not difficult in theory; however, practical limitations often prevent proper coordination of function calls.
For example, new SAN protocols have been developed and deployed quickly. In addition to providing new storage functionality, the new SAN protocols typically allow SCSI commands to be transported over the SAN. In some cases, network interface drivers for these new SAN protocols are not compatible with existing storage applications function calls. As a result, the storage application may need modifications to work with the network interface driver to take advantage of the new SAN protocol. Modifying existing storage applications in this manner is costly since modifications must be made each time a new SAN protocol is integrated with the storage application.
From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method that isolate a storage application from a network interface driver by providing a software isolation layer with independent interfaces for a storage application and a network interface driver. Beneficially, such an apparatus, system, and method would enable network interface drivers to be added or replaced without requiring software changes the storage application.